#!/bin/bash
###############################################################################
# @用例ID: 20230525-154056-556766027
# @用例名称: audit-test
# @用例级别: 3
# @用例标签:
# @用例类型: 功能
###############################################################################
[ -z "$TST_TS_TOPDIR" ] && {
    TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")"
    export TST_TS_TOPDIR
}
source "${TST_TS_TOPDIR}/tst_common/lib/common.sh" || exit 1
###############################################################################

g_tmpdir="$(mktemp -d)"
  
tc_setup() {
    msg "this is tc_setup"
    # @预置条件：audit已安装

    assert_true command -v auditctl
    assert_true command -v aureport
    return 0
}

do_test() {
    msg "this is do_test"
    
    # @测试步骤:1: 创建一个简单的审计规则
    # @预期结果:1: 成功创建审计规则
    sudo auditctl -a always,exit -F arch=b64 -S open,openat -k mykey
    assert_true [ $? -eq 0 ]

    # @测试步骤:2:启动审计服务
    # @预期结果:2:成功启动审计服务
    assert_true sudo systemctl start auditd.service

    # @测试步骤:3:生成一些日志事件
    # @预期结果:3:成功生成日志事件
    assert_true sudo touch /tmp/testfile
    assert_true sudo cp /tmp/testfile /tmp/testfile_copy

    # @测试步骤:4:生成审计报告
    # @预期结果:4:成功生成审计报告
    assert_true sudo aureport -k -i

    return 0
}



tc_teardown() {
    msg "this is tc_teardown"
    # 停止审计服务
    assert_true sudo systemctl stop auditd.service
    # 清理创建的文件和文件夹
    sudo rm -f /tmp/testfile
    sudo rm -f /tmp/testfile_copy
    rm -rfv "$g_tmpdir" || return 1
    return 0
}


###############################################################################
tst_main "$@"
###############################################################################
